/*6666666666666666666666666666666666666666666666666666666
 * 			ImplementacionListas
 * 
 * Autor: Ernesto Rodriguez
 * 
 * Esta es una implementacion de una pila mediante
 * listas
 66666666666666666666666666666666666666666666666666666666*/

//
public class ImplementacionListas <Type> implements Pila <Type>{

	Lista <Type> datos;
	int size;
	int curr;
	
	public ImplementacionListas(int tam){
		datos = new ImplementacionHashMap<Type>();
		size = tam;
		curr = 0;
	}
	public Type peek() {
		// TODO Auto-generated method stub
		//System.out.println(datos.get(datos.size()-2));
		return datos.get(datos.size()-2);
	}

	@Override
	public Type pop() {
	
		//System.out.println("------------------------------");
		Type ret = datos.get(datos.size()-2);
		datos.delete(datos.size()-2);
		curr--;
		assert curr>=0;
		return ret;
	}

	@Override
	public void push(Type obj) {
		
		datos.add(obj);
		curr++;
		if (curr>=size)
			throw new ArrayIndexOutOfBoundsException();
	}

	@Override
	public int size() {
		
		return datos.size() - 1;
	}
	@Override
	public boolean isEmpty() {
		
		if(size()>0)
			return false;
	
		assert size()>=0;
		return true;
	}

}
